-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Redis cache: make blocking executions unordered #42540
Conversation
When the Redis cache is invoked from an ordered Vert.x blocking execution, which happens for example with SmallRye GraphQL or with chained caching (one blocking `@CacheResult` method invoking other blocking `@CacheResult` method), the Redis cache ends up hanging. This is because the next execution cannot start until the previous execution finishes, but the previous execution waits for the next execution. This commit fixes that by making the Redis cache blocking executions unordered.
Status for workflow
|
I don’t know this code at all but it feels dangerous to me to unorder cache calls execution, especially the writes. |
@gsmet Right, so unordering here doesn't mean changing the order of operations expressed as |
Sounds a bit less scary but maybe let’s wait for @cescoffier ? :) |
I'm not merging this, but note that @cescoffier has already approved :-) |
I have a filter hiding approvals made by people on PTO :). |
Now the big question: should it end up in 3.14? |
One of the fixed bugs is on the 3.15 LTS board, but I'm fine with leaving this to 3.16 only, personally. |
@cescoffier I will let you judge of that and add the label for backport to 3.14 if you think that's how it should be done. |
Added the label. Here, things must be unordered, but don't worry, it's ordered elsewhere (there is a Redis "transaction"). |
When the Redis cache is invoked from an ordered Vert.x blocking execution, which happens for example with SmallRye GraphQL or with chained caching (one blocking
@CacheResult
method invoking other blocking@CacheResult
method), the Redis cache ends up hanging. This is because the next execution cannot start until the previous execution finishes, but the previous execution waits for the next execution.This commit fixes that by making the Redis cache blocking executions unordered.
Fixes #39558
Fixes #42253